const { verify } = require('../util/jwt')
const { jwtSecret } = require('../config/config.default')
const { User } = require('../model')

module.exports = async (req,res,next) => {
    // 从请求头获取token数据
    let token = req.headers['authorization']
    token = token ? token.split('Bearer ')[1] : null
    if (!token) {
        return res.status(401).end()
    }
    // 验证token是否有效
    try {
        // 有效 → 把用户信息读取出来挂载到req请求对象上，继续往后执行
        const decodedToken = await verify(token,jwtSecret)
        // 验证通过，从数据库中查找相关的信息
        req.user = await User.findById(decodedToken.userId)
        // console.log(req.user);
        next()
    } catch (err) {
        // 无效 → 响应401状态码
        return res.status(401).end()
    }
}